package tds.model22;

import java.io.ObjectStreamException;
import java.io.Serializable;

/**
 * @Company 杭州先锋电子技术股份有限公司
 * @ClassName Singleton6
 * @Description 单例模式之饿汉模式防反射
 * @Date 2020/2/5 21:51
 * @version 1.0.0
 */
public class Singleton6 implements Serializable {

    private static final long serialVersionUID = 7289879110457513096L;

    private static Singleton6 instance = new Singleton6();

    // 私有化构造方法，不允许自己实例化
    private Singleton6(){
        // 防止反射创建对象
        if(instance != null){
            throw new RuntimeException("不能创建对象");
        }
    }

    public static Singleton6 getInstance(){
        return instance;
    }

    // 防止反序列化。反序列化时，如果定义了readResolve方法，则直接返回此方法指定的对象。而不需要单独创建新对象。
    private Object readResolve() throws ObjectStreamException {
        return instance;
    }
}
